/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.fatec.ads.facade;

import br.edu.fatec.ads.bo.BusinessObjectPessoaComplemento;
import br.edu.fatec.ads.classes.Aluno;
import br.edu.fatec.ads.classes.Funcionario;
import org.hibernate.HibernateException;

/**
 *
 * @author Ubirajara
 */
public class FacadePessoaComplemento {

    private static FacadePessoaComplemento facade = null;
    private BusinessObjectPessoaComplemento regraNegocio = null;

    private FacadePessoaComplemento() {
        regraNegocio = new BusinessObjectPessoaComplemento();
    }

    public static FacadePessoaComplemento getInstance(){
        if(facade == null){
            facade = new FacadePessoaComplemento();
        }

        return facade;
    }

    public Funcionario login(String login, String senha)
        throws HibernateException{
        Funcionario funcionario = null;

        regraNegocio.beginTransaction();

        try{
            funcionario = regraNegocio.recuperarFuncionario(login);

            regraNegocio.commitTransaction();
        }catch(HibernateException cause){
            cause.printStackTrace();

            regraNegocio.rollbackTransaction();

            throw new HibernateException("Usuário não cadastrado!");
        }

        if(!regraNegocio.verificaSenha(funcionario, senha)){
            throw new HibernateException("Combinação usuário e senha inválidos!");
        }

        return funcionario;
    }

    public Aluno recuperarAluno(long codigoMatricula)
        throws HibernateException{
        Aluno alunoPesquisado = null;

        regraNegocio.beginTransaction();

        try{
            alunoPesquisado = regraNegocio.recuperarAluno(codigoMatricula);

            regraNegocio.commitTransaction();
        }catch(HibernateException cause){
            regraNegocio.rollbackTransaction();

            throw cause;
        }

        return alunoPesquisado;
    }

}